第7章 複数コンテナの運用管理
複数コンテナ管理の概要
Web3層システムアーキテクチャ
Webサーバ
アプリケーションサーバ
データベースサーバ
永続データの管理
データのバックアップ/リストア
ログの収集
Docker Composeによる複数コンテナの構成管理
イメージの指定
code:イメージの指定
services:
webserver:
image: ubuntu
イメージのビルド
code:buildの指定
services:
webserver:
build: .
コンテナ内で動かすコマンドの指定
code:コンテナ内で動かすコマンドの指定
command: /bin/bash
code:entrypointの指定
entrypoint:
- php
- -d
- memory_limit=-1
コンテナ間の連携
別のコンテナへリンク機能を使って連携したいときはlinksコンテナ名を設定する。
コンテナ名とは別にエイリアスを付ける場合はサービス名:エイリアスを設定する。
code:コンテナ間の連携
links:
- logserver
- logserver:log01
コンテナ間の通信
ホストマシンのポート番号:コンテナのポート番号を指定するかコンテナのポート番号のみを指定する。
コンテナのポート番号のみを指定するときは、ホストマシンのポートはランダムな値が設定される。
code:公開ポートの指定
ports:
- "3000"
- "8000:8000"
- "49100:22"
- "127.0.0.1:8001:8001"
ホストマシンへポート公開せずリンク機能を使って連携するコンテナのみポートを公開するときはexposeを指定する。
code:コンテナの内部飲みに公開するポートの指定
expose:
- "3000"
- "8000"
サービスの依存関係の定義
コンテナの開始の順序を制御するだけで、コンテナ状のアプリケーションが利用可能になるまで待つという制御は行わない。
code:依存関係の指定
services:
webserver:
build: .
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres
コンテナの環境変数の指定
code:環境変数の指定
# 配列形式での指定
environment:
- HOGE=fuga
- FOO
# ハッシュ形式での指定
environment:
HOGE:huga
FOO:
環境変数が多い場合は、別ファイルで環境変数を定義してそのファイルを読み込むこともできる。
code:環境変数ファイルの読み込み
env_file: envfile
コンテナの情報設定
code:コンテナ名の指定
container_name: web-container
code:コンテナのラベル設定
# 配列形式での指定
labels:
- "com.example.description=Accounting webapp"
- "com.example.department=Finance"
# ハッシュ形式での指定
labels:
com.example.description: "Accounting webapp"
com.example.department: "Finance"
設定したコンテナのラベルを確認するにはdocker-compose configコマンドを使う。
コンテナのデータ管理
code:ボリュームの設定
volumes:
- /var/lib/mysql
- cache/:/tmp/cache
ボリューム指定の後ろにroを指定することで、ボリュームを読み取り専用としてマウントすることができる。
code:ボリュームの読み取り専用の指定
volumes:
- ~/config:/etc/configs/:ro
別のコンテナから全てのボリュームをマウントするときは、volumes_fromにコンテナ名を指定する。
code:ボリュームのマウント指定
volumes_from:
- log
Docker Composeによる複数コンテナ運用
Docker Composeの基本コマンド
table:Docker Composeの主なサブコマンド
サブコマンド 説明
up コンテナの生成/起動
ps コンテナの一覧表示
logs コンテナログの出力
run コンテナの実行
start コンテナの起動
stop コンテナの停止
restart コンテナの再起動
pause コンテナの中断
unpause コンテナの再開
port 公開ポート番号の表示
config 構成の確認
kill 実行中のコンテナの強制停止
rm コンテナの削除
down リソースの削除
複数コンテナの生成
docker-compose up [オプション] [サービス名 .]
複数コンテナの確認
docker-compose ps
コンテナでのコマンド実行
docker-compose run コンテナ名 コマンド
複数コンテナの起動/停止/再起動
docker-compose start
docker-compose stop
docker-compose restart
複数コンテナの一時停止/再開
docker-compose pause
docker-compose unpause
サービスの構成管理
docker-compse port [オプション] サービス名 プレイベートポート番号
docker-compose config
複数コンテナの強制停止/削除
docker-compose kill [コマンド] 送信するシグナル
docker-compose rm
複数リソースの一括削除
docker-compose down [オプション]